<?php

class Listas_Model_DbTable_Tramitelistas extends Zend_Db_Table_Abstract {
	
	protected $_name = 'tramitelista_cna';
	protected $_primary = 'codtramitelista';
	//protected $_rowClass = 'App_Audit_Row';

	public function getTramiteLista($codproceso,$codlista) {
	    $select = $this->select(self::SELECT_WITH_FROM_PART)
	                   ->where("codproceso=?",$codproceso)
	                   ->where("codlista=?",$codlista);
//   Zend_Debug::dump($select->__tostring());
		return $select->query()->fetch();
	}
	
	public function crearDiligenciaTramiteLista($datos){
	    $this->getAdapter()->beginTransaction();
	    try {
		    $this->getAdapter()->query("INSERT INTO tramiteseccion_cna (codseccionlista,codtramitelista)
		    					    	SELECT s.codseccionlista,{$datos["codtramitelista"]} FROM seccioneslista_cna s
		    					    	WHERE s.codlista={$datos["codlista"]}");
		    if (!isset($datos["tipolista"])){
			    $this->getAdapter()->query("INSERT INTO tramiteelemento_cna (codtramitelista,codseccionlista,codelementolista)
			    					    	SELECT {$datos["codtramitelista"]},s.codseccionlista,s.codelementolista FROM seccionelementos_cna s
			    					    	WHERE s.codseccionlista IN (SELECT s1.codseccionlista FROM seccioneslista_cna s1
			    					    	WHERE s1.codlista={$datos["codlista"]})");
		    }
		    $this->getAdapter()->commit();
	    } catch(Exception $e) {
			$this->getAdapter()->rollBack();
			throw $e;
		}
	}
	public function getSeccionesDiligenciaTramiteLista($codtramitelista){
	    $sql  = "SELECT * FROM seccioneslista_cna s,tramiteseccion_cna t ";
	    $sql .= "WHERE s.codseccionlista=t.codseccionlista AND codtramitelista={$codtramitelista} ORDER BY orden";
	    return $this->getAdapter()->query($sql)->fetchAll();
	}
    
	public function getElementosDiligenciaTramiteLista($codtramitelista,$codseccionlista){
	    $sql = "SELECT t.*,(SELECT texto FROM elementoslista_cna e WHERE e.codelementolista=s.codelementolista) as nombre ";
	    $sql .= "FROM seccionelementos_cna s,tramiteelemento_cna t ";
	    $sql .= "WHERE s.codseccionlista=t.codseccionlista AND s.codelementolista=t.codelementolista  ";
	    $sql .= "AND t.codtramitelista={$codtramitelista} AND t.codseccionlista={$codseccionlista} ORDER BY s.orden  ";
	    return $this->getAdapter()->query($sql)->fetchAll();
	}
	
    public function getDiligenciaTramiteLista($codtramitelista){
		$sql = "SELECT sl.codseccionlista,sl.orden AS ordenseccion,sl.nombre AS nombreseccion, sl.seccioncna, se.orden AS ordenelemento, ";
        $sql .= "ts.codtramitelista,ts.codtramiteseccion,ts.codescala AS escala,ts.valoracion AS val ,ts.justificacionvaloracion AS justificacion, ";
        $sql .= "ts.peso AS pesoseccion, te.justificacionpeso AS jusseccion, ";
		$sql .= "te.codtramiteelemento,te.codescala,te.valoracion,te.justificacionvaloracion,te.peso AS pesoelemento, te.justificacionpeso AS juselemento, ";
		$sql .= "(SELECT texto FROM elementoslista_cna e WHERE e.codelementolista=se.codelementolista) as nombre, ";
		$sql .= "(SELECT nombre FROM escalas_cna e WHERE ts.codescala=e.codescala) as escalas,  ";
		$sql .= "(SELECT nombre FROM escalas_cna e WHERE te.codescala=e.codescala) as escalae,  ";
		$sql .= "(SELECT MAX(pesosuperior) FROM escalas_cna e WHERE sl.codlista=e.codlista) as logroideal  ";
		
		$sql .= "FROM seccioneslista_cna sl, tramiteseccion_cna ts, seccionelementos_cna se, tramiteelemento_cna te  ";
		$sql .= "WHERE sl.codseccionlista=ts.codseccionlista  ";
		$sql .= "AND sl.codseccionlista=se.codseccionlista ";
		$sql .= "AND se.codelementolista=te.codelementolista  ";
		$sql .= "AND se.codseccionlista=te.codseccionlista  ";
		$sql .= "AND ts.codtramitelista={$codtramitelista} ";
		$sql .= "AND te.codtramitelista={$codtramitelista} ";
		$sql .= "ORDER BY sl.orden,se.orden  ";
	    return $this->getAdapter()->query($sql)->fetchAll();
	}
	public function verificarPonderacionElementosSeccion($codseccionlista,$codtramitelista){
	    $sql = "SELECT COUNT(*) AS cantidad FROM tramiteelemento_cna ";
	    $sql.="WHERE codseccionlista={$codseccionlista} AND ";
	    $sql.="codtramitelista={$codtramitelista} AND ";
	    $sql.="(peso IS NULL OR justificacionpeso IS NULL)  " ;
	    return $this->getAdapter()->query($sql)->fetch();
	}
	
	public function verificarPonderacion($codtramitelista){
	    $sql = "SELECT COUNT(*) AS cantidad FROM tramiteelemento_cna ";
	    $sql.="WHERE codtramitelista={$codtramitelista} AND ";
	    $sql.="(peso IS NULL OR justificacionpeso IS NULL)  " ;
	    return $this->getAdapter()->query($sql)->fetch();
	}
	
	public function verificarElementosSeccion($codseccionlista,$codtramitelista){
	    $sql = "SELECT COUNT(*) AS cantidad FROM tramiteelemento_cna ";
	    $sql.="WHERE codseccionlista={$codseccionlista} AND ";
	    $sql.="codtramitelista={$codtramitelista} AND ";
	    $sql.="(codescala IS NULL OR justificacionvaloracion IS NULL)  " ;
	    return $this->getAdapter()->query($sql)->fetch();
	}
	
	public function verificarValoracion($codtramitelista) {
	    $sql = "SELECT COUNT(*) AS cantidad FROM tramitelista_cna WHERE justificacionvaloracion IS NULL AND codtramitelista={$codtramitelista}  ";
	    $sql.="OR codtramitelista IN (SELECT codtramitelista FROM tramiteseccion_cna WHERE justificacionvaloracion IS NULL AND codtramitelista={$codtramitelista})  ";
	    return $this->getAdapter()->query($sql)->fetch();
	}
	
	public function verificarInformacionAutoevaluacion($codtramitelista) {
	    $sql = "SELECT COUNT(*) AS cantidad FROM tramiteseccion_cna WHERE sintesis IS NULL AND codtramitelista={$codtramitelista}  ";
	    return $this->getAdapter()->query($sql)->fetch();
	}
	
	public function getAdjuntosTramite($codtramitelista) {
	    $select = $this->select()
	                   ->from(array("dt"=>"documentostramitelista_cna"))
	                   ->join(array("d"=>"documentos_cna"),"dt.coddocumento=d.coddocumento","*")
	                   ->where("dt.codtramitelista=?",$codtramitelista);
	    $select->setIntegrityCheck(false);
		return $select->query()->fetchAll();
	}
	
	public function getResponsablePlan($codprograma){
	    $sql = "SELECT * FROM responsableplanmejoramiento_cna  ";
	    $sql.= "WHERE codprograma={$codprograma}";
	    return $this->getAdapter()->query($sql)->fetchAll();
	}
	
	public function resetearValoracion($codtramitelista){
	    $sql1 = "
                UPDATE
                 tramiteelemento_cna
                SET
                 codescala=NULL, valoracion=NULL, justificacionvaloracion=NULL, peso=NULL, justificacionpeso=NULL
                FROM
                tramiteseccion_cna ts
                WHERE
                ts.codseccionlista = tramiteelemento_cna.codseccionlista
                AND ts.codtramitelista={$codtramitelista}";
	    $sql2 = "
	    		UPDATE
                 tramiteseccion_cna
                SET
                 codescala=NULL, valoracion=NULL, justificacionvaloracion=NULL, peso=NULL, justificacionpeso=NULL
                WHERE
                 codtramitelista={$codtramitelista}";
	    
	    $this->getAdapter()->beginTransaction();
	    try {
		     $this->getAdapter()->query($sql1);
		     $this->getAdapter()->query($sql2);
		    $this->getAdapter()->commit();
	    } catch(Exception $e) {
			$this->getAdapter()->rollBack();
			throw $e;
		}
	}
	
	
}//fin de la clase

